# -*- coding: utf-8 -*-
import json
import mod.client.extraClientApi as clientApi
from mod.client.ui.controls.baseUIControl import BaseUIControl
from mod.client.ui.controls.buttonUIControl import ButtonUIControl
from mod.client.ui.controls.imageUIControl import ImageUIControl
from mod.client.ui.controls.itemRendererUIControl import ItemRendererUIControl
from mod.client.ui.controls.labelUIControl import LabelUIControl
from legendaryPowerClientScript.ui.base.baseComponent import BaseComponent
from legendaryPowerClientScript.ui.base.buttonComponent import ButtonComponent
from legendaryPowerClientScript.ui.base.labelComponent import LabelComponent
from legendaryPowerClientScript.util import apiUtil
class ItemComponent(ButtonComponent):
    # type: () -> None
    """
    ItemComponent类是继承自ButtonComponent的组件，用于显示游戏中的物品。
    ui文件中，一个完整的物品组件包含以下结构（均为可选，斜杠分隔开表示两个均可）：

    按钮组件:
        selected 图片组件： 表示物品是否当前被选中
        selectable/can_click 图片组件： 表示物品是否是可选项
        rank 图片组件： 表示物品的品质，会根据物品品质设置为 textures/ui/rank/品质
        itemNum/amount/item_num 文字组件： 物品的数量，有时也会显示些其它的字
        star 图片组件： 物品的星级
        new 图片组件： 是否是新物品
        icon/item_renderer/item 物品渲染组件： 物品图标
        picIcon 图片组件： 用图片显示物品图标，用得较少
        cooldown_bar 进度条组件： 物品冷却条
        cooldown 文字组件： 物品冷却剩余时间
    """

    def SetTouchUp(self, callback):
        """
        设置物品按钮点击的回调函数。

        Args:
            - callback (function): 回调函数
        """
        pass

    def SetItem(self, item):
        # type: (itemDict) -> None
        """
        设置物品。

        Args:
            - item (itemDict): 物品字典
        """
        pass

    def SetCooldown(self, percent, text=None):
        # type: (int, str) -> None
        """
        设置冷却时间。

        Args:
            - percent (int): 冷却百分比
            - text (str): 冷却文本
        """
        pass

    def SetSelected(self, selected):
        # type: (bool) -> None
        """
        设置物品是否被选中。

        Args:
            - selected (bool): 是否被选中
        """
        pass

    def RemoveNew(self, category, slot):
        # type: (bool) -> None
        """
        将“新”标识移除。需要传入物品的槽位类型和槽位，以同步给服务端“新”的状态

        Args:
            - selected (bool): 是否被选中
        """
        pass

